Cấu hình tổng quát 75 

Một phần của tài liệu SQL injection - tấn công và cách phòng tránh (Trang 75 - 78)

2. Cấu hình 74 

2.1.Cấu hình tổng quát 75 

a. Một số thông tin cơ bản

Việc khai báo và cấu hình module ModSecurity trong file cấu hình của Apache có thể theo hai cách:

™ Cách thứ nhất: mô tả cấu hình trong chính bản thân file cấu hình của apache (là file httpd.conf với apache v1.x và là apache2.conf với apache v2.x). Cách này có thể khiến file cấu hình của apache phức tạp thêm và khó quản lý hơn.

™ Cách thứ hai: xây dựng một file độc lập (thường được đặt tên là modsecurity2.conf), và định nghĩa file này là file cấu hình của module ModSecurity trong file cấu hình của apache, ví dụ trong khai báo module trong apache2.conf:

<IfModule mod_security2.c>

include /etc/apache2/conf.d/modsecurity2.conf </IfModule>

Sau khi khai báo module, và file cấu hình, chúng ta thực hiện tạo file cấu hình của ModSecurity. Như khai báo ở trên, file cần tạo là modsecurity2.conf đặt trong thư mục conf.d là thư mục con của thư mục apache2. Để bắt đầu sử dụng module, cần khai báo thông qua chỉ thị sau:

<IfModule security2_module>

# turn on rule engine and set default action SecRuleEngine On

SecDefaultAction "phase:2,deny,log,status:403" </IfModule>

Cần lưu ý ở đây là định danh của module được chỉ ra trong chỉ thị

IfModule cần đúng với định danh được khai báo trong lệnh LoadModule trong file cấu hình của Apache (apache2.conf), nếu không Apache sẽ bỏ qua tất cả nội dung nằm trong cặp thẻ IfModule.

- SecRuleEngine On : kích hoạt engine xử lý các luật lọc.

- SecDefaultAction: chỉ ra những gì sẽ xảy ra khi một luật được khớp (rule match).

- Phase:2 . ModSecurity xử lý một request theo 5 pha (phase), tương ứng với các pha xử lý của Apache, ModSecurity 2.x trởđi có thể áp các luật cho cả

5 pha này. Năm pha xử lý này như sau:

Số thứ tự, tên pha Thời điểm xảy ra

1. REQUEST_HEADERS Ngay sau khi Apache đọc xong header của request HTTP

2. REQUEST_BODY Sau khi nội dung request được đọc. Hầu hết các luật được đưa ra để xử lý trong pha này

3. RESPONSE_HEADERS Sau khi header của response được gửi lại cho client

4. RESPONSE_BODY Trước khi gửi nội dung response cho client, nội dung này sẽ được rà soát lại

để tránh những thiếu sót về rò rỉ dữ liệu 5. LOGGING Sau khi quá trình ghi log bắt đầu. Tại thời

điểm này, request sẽ không thể bị chặn lại.

Như nội dung bảng trên đã trình bày, pha hữu ích nhất để quản lý các request HTTP là pha thứ hai. Khi chỉđịnh phase:2 cho hành động mặc định, tất cả các luật tiếp theo sẽ luôn xử lý ở pha 2 trừ khi các pha khác được chỉ định trong luật đó. Để mô tả một hành động tùy ý, bỏ qua hành động mặc

định, sử dụng cấu trúc ví dụ như sau:

Với mô tả này, luật sẽ xử lý ở pha 1, sau khi nhận được request header.

b. Hoàn tất cấu hình cơ bản

Để hoàn tất cấu hình cơ bản cho ModSecurity, ta cần bổ sung thêm một số chỉ thị hữu ích, cần thiết khác cho nó. Xét cấu hình được khuyến cáo sau:

<IfModule security2_module>

# turn on rule engine and set default action SecRuleEngine On

SecDefaultAction "phase:2,deny,log,status:403" # Configure request body access and limits SecRequestBodyAccess On

# Debug log setting

SecDebugLog logs/modsec_debug.log SecDebugLogLevel 0

</IfModule>

Chỉ thị SecRequestBodyAcces On sẽ kích hoạt việc xử lý thân nội dung HTTP request. Điều này cho phép chúng ta kiểm tra những nội dung gửi lên thông qua request POST. Khi chỉ thị này được kích hoạt, ModSecurity sẽ

lưu tạm lại thân request trong bộ nhớ, xử lý nó trước khi gửi lại cho Apache xử lý tiếp.

Chỉ thị SecDebugLog, chúng ta cần cung cấp đường dẫn tới file log phục vụ debug, trong trường hợp này là thư mục logs nằm bên trong thư

mục gốc của Apache. Ngoài ra chỉ thị SecDebugLogLevel 0 nói lên rằng không một dữ liệu nào về debug được lưu lại. Điều này có ích khi mô tả

trong file cấu hình, bởi các mức độ debug log sẽ có thể thay đổi trong các luật khác.

Một điều rất quan trọng mỗi khi thực hiện chỉnh sửa lên luật hoặc các luật, đó là sau mỗi thay đổi, nhất thiết phải khởi động lại Apache để nạp lại các luật. Nếu điều này không thực hiện đúng, sẽ gây ra những xung đột do mất đi sự nhất quán giữa cấu hình, luật, các log, và tai hại thường khó lường trên những mô hình lớn.

Sau khi trình bày tóm lược về một số thao tác cài đặt và cấu hình cơ bản, chúng ta sẽ bắt đầu thử xây dựng một luật cơ bản và thử nghiệm hoạt động của chúng. Trong file cấu hình ModSecurity, thêm luật sau:

# block all requests that containts “restricted” in URI SecRule REQUEST_URI “restricted”

Trong thư mục DocumentRoot của Apache2 (trường hợp này là trong thư mục /var/www/), tạo một file restricted.php có nội dung bất kỳ, để kiểm tra hoạt động của bộ lọc, ta thử truy cập vào file restricted.php trên:

Kết quả trên chứng tỏ luật khai báo phía trên đã hoạt động tốt. Tiếp theo chúng ta sẽ thực hiện đề cập các luật chi tiết hơn trong phần 1.2.2.

d. Ngụy trang Web Server

Việc ngụy trang chính bản thân Web server là một việc cần thiết nhằm gây khó khăn cho kẻ tấn công. Việc ngụy trang ởđây có thể thực hiện thông qua ModSecurity, ModSecurity có thể trả về thông tin thay vì là Apache có thể sẽ là Microsoft-IIS/5.0 hoặc một thông tin gì đó gây khó khăn cho kẻ

tấn công. Để thực hiện việc này, sử dụng chỉ thị SecServerSignature, trên Apache2 cần cấu hình biến ServerToken từ Prod (mặc định) thành Full để

có thể sử dụng được chỉ thị trên. Cú pháp của chỉ thị trên dạng như:

SecServerSignature “Microsoft-IIS/5.0”

Một phần của tài liệu SQL injection - tấn công và cách phòng tránh (Trang 75 - 78)